package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Vector;

import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

import vista.*;
import modelo.*;


public class ControladorVentanaPrincipal implements ActionListener, WindowListener {
	
	private VentanaPrincipal ventana;
	private Administracion administracion = new Administracion ();
	private BufferedReader entradaStream = null;
	private ControladorRegistroPaciente registroPaciente;
	
	public ControladorVentanaPrincipal() {
		super();
		System.out.println("hol uno");
		ventana = new VentanaPrincipal();
		System.out.println(ventana.getComponentCount());
		//ventana.setLocationRelativeTo(null);
		ventana.setVisible(true);
		System.out.println("hol .5");
		System.out.println(this.getClass());
		ventana.agregarListener(this);
		System.out.println("hol 2");
		//cargarClinicas();
		//cargarMedicos();
		cargarPacientes();
		//cargarEspecialidades();
		System.out.println("hol 3");
		ventana.agregarListenerVentana(this);
		System.out.println(administracion.getPacientesRed().size());
		
	}

	public void cargarClinicas(){
		String l;
		Clinica clinica;
		
		try{
			entradaStream = new BufferedReader(new FileReader("txt/Clinicas.txt"));
			while((l = entradaStream.readLine()) != null){
				clinica = new Clinica();
				clinica.setCodClinica(l);
				clinica.setRif(entradaStream.readLine());
				clinica.setDirClinica(entradaStream.readLine());
				clinica.setTelefono(entradaStream.readLine());
				clinica.setPrecioConsultas(entradaStream.read());
				clinica.agregarPrecioIntervencionesAmbulatorias(entradaStream.read());//posicion 0 arreglo precio de intervenciones
				clinica.agregarPrecioIntervencionesGenerales(entradaStream.read());//posicion uno arreglo precio de intervenciones
			    Vector<HorarioClinica> horarioClinica = new Vector<HorarioClinica>();
			    clinica.setIntervencionesPorDia(horarioClinica);
			    Vector<Consulta> consulta = new Vector<Consulta>();
			    clinica.setConsultas(consulta);
			    Vector<Cita> cita = new Vector<Cita>();
			    clinica.setCitasPacientesClinica(cita);
			administracion.agregarClinica(clinica);	
			}
		}
		catch (IOException e) {
			System.err.println("Excepcion de tipo entrada/salida: " + e.getMessage());
		}

	}
	public void cargarMedicos(){
		String l;
		Medico medico;
		
		try{
			entradaStream = new BufferedReader(new FileReader("txt/Medicos.txt"));
			while((l = entradaStream.readLine()) != null){
				medico = new Medico();
				medico.setCedula(l);
				medico.setNombre(entradaStream.readLine());
				medico.setDireccion(entradaStream.readLine());
				medico.setTelefono(entradaStream.readLine());
				medico.setEdad(entradaStream.read());
				
				String fechaNac=entradaStream.readLine();
				try {
					medico.setFechaNac(new SimpleDateFormat("dd-MM-yyyy").parse(fechaNac));
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				Vector<Especialidad> especialidad = new Vector<Especialidad>();
			    medico.setEspecialidadesMedico(especialidad);
			    Vector<Cita> cita = new Vector<Cita>();
			    medico.setCitasAsignadasMedico(cita);
			    Vector<Intervencion> intervencion = new Vector<Intervencion>();
			    medico.setIntervencionesAsignadasMedico(intervencion);
			    Vector<Consulta> consulta = new Vector<Consulta>();
			    medico.setConsultasAtendidasMedico(consulta);
				
			administracion.agregarMedico(medico);	
			}
		}
		catch (IOException e) {
			System.err.println("Excepcion de tipo entrada/salida: " + e.getMessage());
		}
	}
	public void cargarPacientes(){
		String l;
		Paciente paciente;
		
		try{
			entradaStream = new BufferedReader(new FileReader("txt/Pacientes.txt"));
			while((l = entradaStream.readLine()) != null){
				paciente = new Paciente();
				paciente.setCedula(l);
				paciente.setNombre(entradaStream.readLine());
				paciente.setDireccion(entradaStream.readLine());
				paciente.setTelefono(entradaStream.readLine());
				paciente.setEdad(Integer.parseInt(entradaStream.readLine()));
				String fechaNac=entradaStream.readLine();
				try {
					paciente.setFechaNac(new SimpleDateFormat("dd-MM-yyyy").parse(fechaNac));
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				paciente.setTipoPaciente(Integer.parseInt(entradaStream.readLine()));
				HistoriaMedica historia = new HistoriaMedica();
			administracion.agregarPaciente(paciente);	
			}
		}
		catch (IOException e) {
			System.err.println("Excepcion de tipo entrada/salida: " + e.getMessage());
		}
	}
	
	
	public void cargarEspecialidades(){
		String l;
		Especialidad especialidad;
		
		try{
			entradaStream = new BufferedReader(new FileReader("txt/Especialidades.txt"));
			while((l = entradaStream.readLine()) != null){
				especialidad = new Especialidad();
				especialidad.setCodEspecialidad(l);
				especialidad.setDescEspecialidad(entradaStream.readLine());
				administracion.agregarEspecialidades(especialidad);	
			}
		}
		catch (IOException e) {
			System.err.println("Excepcion de tipo entrada/salida: " + e.getMessage());
		}
	}
	@Override
	public void windowActivated(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowClosed(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowClosing(WindowEvent arg0) {
		
	}

	@Override
	public void windowDeactivated(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowDeiconified(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowIconified(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowOpened(WindowEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		
		if (e.getSource() instanceof JMenuItem) {
			if (e.getActionCommand().equalsIgnoreCase("Paciente")) {
			new ControladorRegistroPaciente(administracion);
			}
				
				
		}
	}
}


	
	


